#ifndef LIDAR_PERPROCESS_MULTI_PROCESS_POINTS_H
#define LIDAR_PERPROCESS_MULTI_PROCESS_POINTS_H
#include <math.h>
#include <iomanip>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/common/io.h>
#include "common/data_type.h"
namespace perception
{
    namespace tool
    {
        // template <typename T1, typename T2, typename T3>
        class MultiProcessPoints
        // class MultiProcessPoints
        {
        public:
            // using Ptr = pcl::PointCloud<T1>::Ptr;
            // using ConstPtr = pcl::PointCloud<T1>::ConstPtr;
            MultiProcessPoints() {}
            template <typename T1, typename T2, typename T3>
            void SplitPoints(const typename pcl::PointCloud<T1>::Ptr &data_in, std::vector<typename pcl::PointCloud<T2>::Ptr> &data_out, T3 &config);
            template <typename T1, typename T2>
            void MergePoints(std::vector<typename pcl::PointCloud<T1>::Ptr> &data_in, typename pcl::PointCloud<T2>::Ptr &data_out);
            ~MultiProcessPoints() {}

        private:
        };
    }
}
#endif